package xin.fsqr520.project.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;
import xin.fsqr520.project.domain.po.Card;

import java.math.BigDecimal;

public interface CardMapper extends BaseMapper<Card> {
    /**
     * 根据用户ID给校园卡充值（需确保用户仅持有一张校园卡）
     * @param userId 用户ID（对应card表的user_id字段）
     * @param amount 充值金额（必须为正数）
     * @return 影响行数：1-充值成功，0-充值失败（用户无卡或卡状态异常）
     */
    @Update("""
                UPDATE card 
                SET balance = balance + #{amount},
                    total_recharge = total_recharge + #{amount},
                    update_time = CURRENT_TIMESTAMP  -- 补充更新时间字段
                WHERE user_id = #{userId} 
                  AND status = 1  -- 仅允许状态正常的卡充值（0-冻结，1-正常，2-挂失）
            """)
    int addBalanceByUserId(
            @Param("userId") Long userId,  // 参数名与SQL中的#{userId}保持一致
            @Param("amount") BigDecimal amount
    );
}
